Le parcours vers des noyaux haute performance commence par le passage de orienté opérations programmation (PyTorch Eager) vers conscient du matériel programmation. Triton constitue le pont essentiel sur cette voie.
1. Définition de la pile
Triton est un langage et un compilateur pour la programmation parallèle, conçu pour rendre possible l'écriture de noyaux de calcul personnalisés haute performance en syntaxe Python. Il occupe une position unique entre les deux extrêmes :
- PyTorch Eager : Haute abstraction, facile à utiliser, mais contrôle limité de l'utilisation du matériel.
- CUDA C++ : Contrôle maximal, mais grande complexité (gestion manuelle de la mémoire partagée et de la synchronisation).
- Triton : Syntaxe Pythonique avec contrôle au niveau des blocs (en tuiles) contrôle.
2. Le paradigme en tuiles
Contrairement à CUDA, qui opère au niveau du thread, Triton utilise un modèle de programmation basé sur les blocs (en tuiles) de programmation. Ceci est particulièrement pertinent pour l'apprentissage profond où les données (matrices, cartes d'attention) sont naturellement structurées en blocs.
3. L'illusion de performance
Une erreur courante consiste à penser que Triton est simplement « PyTorch plus rapide ». En réalité, il s'agit d'un paradigme distinct. Les gains de performance proviennent de la capacité du développeur à éliminer les goulets d'étranglement (comme la « Mur de mémoire ») en fusionnant des opérations pour garder les données dans la mémoire SRAM rapide intégrée au processeur.